﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SkypeBot.Core
{
    public static class Smile
    {
        private static Dictionary<Smiles, string> smileDictionary = new Dictionary<Smiles, string>()
        {
            {Smiles.Smile, ":)"}, 
            {Smiles.SadSmile, ":("}, 
            {Smiles.BigSmile, ":D"}, 
            {Smiles.Cool, "(cool)"}, 
            {Smiles.Surprised, ":O"}, 
            {Smiles.Wink, ";)"}, 
            {Smiles.Crying, ";("}, 
            {Smiles.Sweating, "(:|"}, 
            {Smiles.Speechless, ":|"}, 
            {Smiles.Kiss, ":*"}, 
            {Smiles.TongueOut, ":P"}, 
            {Smiles.Blush, ":$"}, 
            {Smiles.Wondering, ":^)"}, 
            {Smiles.Sleepy, "|-)"}, 
            {Smiles.Dull, "|-("}, 
            {Smiles.InLove, "(inlove)"}, 
            {Smiles.EvilGrin, "]:)"}, 
            {Smiles.CrossFingers, "(yn)"}, 
            {Smiles.Yawn, "(yawn)"}, 
            {Smiles.Puke, "(puke)"}, 
            {Smiles.Doh, "(doh)"}, 
            {Smiles.Angry, "(angry)"}, 
            {Smiles.ItWasntMe, "(wasntme)"}, 
            {Smiles.Party, "(party)"}, 
            {Smiles.Worried, "(worry)"}, 
            {Smiles.MMM, "(mm)"}, 
            {Smiles.Nerd, "(nerd)"}, 
            {Smiles.LipsSealed, ":x"}, 
            {Smiles.Hi, "(wave)"}, 
            {Smiles.Call, "(call)"}, 
            {Smiles.Talking, "(talk)"}, 
            {Smiles.Devil, "(devil)"}, 
            {Smiles.Angel, "(angel)"}, 
            {Smiles.Envy, "(envy)"}, 
            {Smiles.Wait, "(wait)"}, 
            {Smiles.Bear, "(bear)"}, 
            {Smiles.Makeup, "(makeup)"}, 
            {Smiles.Giggle, "(giggle)"}, 
            {Smiles.Clapping, "(clap)"}, 
            {Smiles.Thinking, "(think)"}, 
            {Smiles.Bow, "(bow)"}, 
            {Smiles.Rofl, "(rofl)"}, 
            {Smiles.Whew, "(whew)"}, 
            {Smiles.Happy, "(happy)"}, 
            {Smiles.Smirk, "(smirk)"}, 
            {Smiles.Nod, "(nod)"}, 
            {Smiles.Shake, "(shake)"}, 
            {Smiles.Punch, "(punch)"}, 
            {Smiles.Waiting, "(waiting)"}, 
            {Smiles.Emo, "(emo)"}, 
            {Smiles.Yes, "(y)"}, 
            {Smiles.No, "(n)"}, 
            {Smiles.HandShake, "(handshake)"}, 
            {Smiles.HighFive, "(highfive)"}, 
            {Smiles.Heart, "(heart)"}, 
            {Smiles.BrokenHeart, "(brokenheart)"}, 
            {Smiles.Skype, "(skype)"}, 
            {Smiles.Mail, "(mail)"}, 
            {Smiles.Flower, "(flower)"}, 
            {Smiles.Rain, "(rain)"}, 
            {Smiles.Sun, "(sun)"}, 
            {Smiles.Time, "(time)"}, 
            {Smiles.Music, "(music)"}, 
            {Smiles.Movie, "(movie)"}, 
            {Smiles.Phone, "(phone)"}, 
            {Smiles.Coffee, "(coffee)"}, 
            {Smiles.Pizza, "(pizza)"}, 
            {Smiles.Cash, "(cash)"}, 
            {Smiles.Muscle, "(flex)"}, 
            {Smiles.Cake, "(cake)"}, 
            {Smiles.Beer,  "(beer)"}, 
            {Smiles.Drink, "(drink)"}, 
            {Smiles.Tumbleweed, "(tumbleweed)"}, 
            {Smiles.Dance, "(dance)"}, 
            {Smiles.Ninja, "(ninja)"}, 
            {Smiles.Star, "(star)"}, 
            {Smiles.Mooning, "(mooning)"}, 
            {Smiles.MiddleFinger, "(finger)"}, 
            {Smiles.Bandit, "(bandit)"}, 
            {Smiles.Drunk, "(drunk)"}, 
            {Smiles.Smoke, "(smoke)"}, 
            {Smiles.Toivo, "(toivo)"}, 
            {Smiles.Rock, "(rock)"}, 
            {Smiles.HeadBang, "(headbang)"}, 
            {Smiles.Bug, "(bug)"}, 
            {Smiles.Fubar, "(fubar)"}, 
            {Smiles.PoolParty, "(poolparty)"}, 
            {Smiles.Swear, "(swear)"}, 
            {Smiles.TMI, "(tmi)"}, 
            {Smiles.Heidy, "(heidy)"} 
        };


        public static string GetSmile(Smiles smile)
        {
            return smileDictionary[smile];
        }

        public static string GetSmilesList()
        {
            string list = string.Empty;

            foreach (var smile in smileDictionary)
            {
                list += string.Format("{0}){1}: \"{2}\"\n", (int)smile.Key, smile.Key.ToString(), smile.Value);
            }

            return list;
        }
    }

    public enum Smiles 
    {
        Smile, 
        SadSmile, 
        BigSmile, 
        Cool, 
        Surprised, 
        Wink, 
        Crying, 
        Sweating, 
        Speechless, 
        Kiss, 
        TongueOut, 
        Blush, 
        Wondering, 
        Sleepy, 
        Dull, 
        InLove, 
        EvilGrin, 
        CrossFingers, 
        Yawn, 
        Puke, 
        Doh, 
        Angry, 
        ItWasntMe, 
        Party, 
        Worried, 
        MMM, 
        Nerd, 
        LipsSealed, 
        Hi, 
        Call, 
        Talking, 
        Devil, 
        Angel, 
        Envy, 
        Wait, 
        Bear, 
        Makeup, 
        Giggle, 
        Clapping, 
        Thinking, 
        Bow, 
        Rofl, 
        Whew, 
        Happy, 
        Smirk, 
        Nod, 
        Shake, 
        Punch, 
        Waiting, 
        Emo, 
        Yes, 
        No, 
        HandShake, 
        HighFive, 
        Heart, 
        BrokenHeart, 
        Skype, 
        Mail, 
        Flower, 
        Rain, 
        Sun, 
        Time, 
        Music, 
        Movie, 
        Phone, 
        Coffee, 
        Pizza, 
        Cash, 
        Muscle, 
        Cake, 
        Beer, 
        Drink, 
        Tumbleweed, 
        Dance, 
        Ninja, 
        Star, 
        Mooning, 
        MiddleFinger, 
        Bandit, 
        Drunk, 
        Smoke, 
        Toivo, 
        Rock, 
        HeadBang, 
        Bug, 
        Fubar, 
        PoolParty, 
        Swear, 
        TMI, 
        Heidy
    }
}

